home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / tex / filecmp.zip / PFILENAM.PAS < prev   
Pascal/Delphi Source File  |  1988-03-03  |  1KB  |  50 lines

  1. {program PFILEN;}
  2. TYPE
  3.    Str80 = String[80];
  4.    Str64 = String[64];
  5.    Str8  = String[8];
  6.    Str4  = String[4];
  7.  
  8.  
  9. FUNCTION ParseFileName (var InStr:Str80;
  10.      VAR DriveAndQual:Str64; var FName:Str8; var FVersion:Str4) : boolean;
  11. LABEL BAD;
  12. VAR I,J : Byte;
  13.    BEGIN
  14.    IF Length(InStr)>63 THEN GOTO BAD;
  15.    FOR I:=1 TO Length(InStr) DO  InStr[I]:=UpCase(InStr[I]);
  16.    ParseFileName:=True;
  17.    {get drive or qual}
  18.    I := POS(':', InStr);
  19.    IF I>2 THEN GOTO BAD;
  20.    REPEAT
  21.       J := POS('\', Copy(InStr,I+1,255));
  22.       IF J>9 THEN GOTO BAD;
  23.       I := I+J;
  24.       UNTIL J=0;
  25.    DriveAndQual := Copy(InStr,1,I);
  26.  
  27.    I := I+1;    {to after qual}
  28.    J := POS('.', Copy(InStr,I,255));    {J is num chars +1 in file name}
  29.    IF J=0 THEN  J:=length(InStr)-I+2;
  30.    IF J>9 THEN GOTO BAD;
  31.    Fname     := Copy(InStr,I,J-1);
  32.  
  33.    IF Length(InStr)-I-J > 2 THEN  GOTO BAD;
  34.    FVersion  := Copy(InStr,I+J-1,255);
  35.    IF FALSE THEN
  36.      BAD: ParseFileName:=False;
  37.    END {ParseFileName};
  38.  
  39. {VAR S : STR80;
  40.      Q : STR64;
  41.      N : STR8;
  42.      V : STR4;
  43.      R : Boolean;
  44. BEGIN
  45. WHILE TRUE DO
  46.    BEGIN
  47.    WRITE('ENTER : '); readln(s);
  48.    R := parsefilename(s,q,n,v);
  49.    Writeln('*', q, '*', n, '*', v, '* ', R);
  50.    END; END.}